package lu.med.praxiswahl.wahlumed.service.beans;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.ejb.Remote;
import javax.ejb.Stateless;

import lu.med.praxiswahl.wahlumed.dao.beans.daointerface.VersicherungAntraegeDAOInt;
import lu.med.praxiswahl.wahlumed.model.beans.CustomerTBL;
import lu.med.praxiswahl.wahlumed.model.beans.VersicherungAntraegeTBL;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.CustomerServiceInt;
import lu.med.praxiswahl.wahlumed.service.beans.serviceinterface.VersicherungAntraegeServiceInt;

/**
 * Session Bean implementation class VersicherungEintraegeInt
 */
@Stateless
@Remote({ VersicherungAntraegeServiceInt.class })
public class VersicherungAntraegeService implements
		VersicherungAntraegeServiceInt {

	/**
	 * Default constructor.
	 */

	@EJB
	private CustomerServiceInt cust;
	private VersicherungAntraegeTBL tmpAnt;

	@EJB
	private VersicherungAntraegeDAOInt verAntDao;

	public VersicherungAntraegeService() {

		tmpAnt = new VersicherungAntraegeTBL();
	}

	@Override
	public int createAntragItem(Calendar datum, String matricule,
			String bezeichner, String text) {
		VersicherungAntraegeTBL tmpAnt_1 = new VersicherungAntraegeTBL();

		tmpAnt_1.setDatum(datum);
		tmpAnt_1.setCustomer(cust.getCustomer(matricule));
		tmpAnt_1.setBezeichner(bezeichner);
		tmpAnt_1.setText(text);

		this.verAntDao.persist(tmpAnt_1);

		return RET_OPERATION_DONE_PROPERLY;
	}

	@Override
	public int deleteAntragItem(Long id) {
		this.verAntDao.delete(id);
		return RET_OPERATION_DONE_PROPERLY;
	}

	@Override
	public void getA_AntragInstance(VersicherungAntraegeTBL antrag) {
		this.tmpAnt = antrag;

	}

	@Override
	public VersicherungAntraegeTBL[] getAntragByCustomer(String matricule) {
		Object[] tmp = this.verAntDao.retrieveAntragItemsByCustomer(matricule)
				.toArray();
		VersicherungAntraegeTBL[] eintraege = new VersicherungAntraegeTBL[tmp.length];

		for (int i = 0; i < tmp.length; i++) {
			eintraege[i] = (VersicherungAntraegeTBL) tmp[i];
		}
		return eintraege;
	}

	@Override
	public Long getAntrag_nummer() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getBezeichner() {
		return this.tmpAnt.getBezeichner();
	}

	@Override
	public CustomerTBL getCustomer() {
		return this.tmpAnt.getCustomer();
	}

	@Override
	public Calendar getDatum() {
		return this.tmpAnt.getDatum();
	}

	@Override
	public Long getSubPrimaryKeyIndex() {
		return this.verAntDao.findDatabaseSubPrimaryKeyIndex();
	}

	@Override
	public String getText() {
		return this.tmpAnt.getText();
	}

	@Override
	public void setBezeichner(String bezeichner) {
		this.tmpAnt.setBezeichner(bezeichner);
		this.verAntDao.update(tmpAnt);

	}

	@Override
	public void setCustomer(CustomerTBL customer) {
		this.tmpAnt.setCustomer(customer);
		this.verAntDao.update(tmpAnt);

	}

	@Override
	public void setDatum(Calendar datum) {
		// TODO Auto-generated method stub

	}

	@Override
	public void setText(String text) {
		// TODO Auto-generated method stub

	}

	@Override
	public void update_date(Long id, Calendar datum) {
		VersicherungAntraegeTBL tmpVers_1 = this.verAntDao
				.retrieveAntragItemByID(id);
		tmpVers_1.setDatum(datum);

		this.verAntDao.update(tmpVers_1);

	}

	@Override
	public void update_bezeichner(Long id, String bezeichner) {

		VersicherungAntraegeTBL tmpVers_1 = this.verAntDao
				.retrieveAntragItemByID(id);
		tmpVers_1.setBezeichner(bezeichner);

		this.verAntDao.update(tmpVers_1);

	}

	@Override
	public void update_text(Long id, String text) {

		VersicherungAntraegeTBL tmpVers_1 = this.verAntDao
				.retrieveAntragItemByID(id);
		tmpVers_1.setText(text);

		this.verAntDao.update(tmpVers_1);

	}

}
